1. Field of the Invention
This invention relates to input/output (I/O) tasks and data transfer between storage devices, and more particularly relates to supporting storage functions using an embedded database management system.
2. Description of the Related Art
The explosion of data created by e-business is making storage a strategic investment priority for companies of all sizes. As storage takes precedence, two major concerns have emerged: business continuity and business efficiency. Business continuity requires storage that supports data availability so employees, customers and trading partners can access data continuously through reliable, disaster-tolerant systems. Business efficiency, where storage is concerned, is the need for investment protection, reduced total cost of ownership and high performance and manageability.
In order to maintain the large amounts of data created and collected, storage area networks (SANs) have been developed. The Storage Network Industry Association (SNIA) defines SAN as a network whose primary purpose is the transfer of data between computer systems and storage elements. A SAN may comprise a communication infrastructure, which provides physical connections; and a management layer, which organizes the connections, storage elements, and computer systems so that data transfer is secure and robust. A SAN may also be a storage system comprising storage elements, storage devices, computer systems, and/or appliances, plus all control software, communicating over a network.
Commonly, a storage area network includes a plurality of storage devices, such as tape drives or hard disk drives, connected with a storage or disk controller. The disk controller is generally a server that is configured to process read/write requests from hosts or client machines. The hosts may be running a variety of operating systems such as Windows, Linux, UNIX, AIX, etc. In large computing environments, the storage area network is an ideal solution for providing large amounts of storage and scalable server or storage controller performance.
Typically, in a storage area network environment, a host requests data from the disk controller. The disk controller then retrieves the data from the particular storage device that contains the requested data, often referred to as a home location. The disk controller then sends the data to the host. If the host modifies the data, the data is sent back to the disk controller which returns the modified data to the home location. Typically, the host awaits a response from the disk controller indicating that the read or write operation has completed.
The disk controller may also provide functions such as the ability to access devices by heterogeneous servers, a data cache, data availability features such as various RAID implementations, scalability, virtualization of devices, and replication services.
Virtualization of devices is the ability to present an image of a storage device that is independent of the actual media on which the data is stored. Virtualization also includes the ability to store the data in a format different from the format which is seen by a server on a virtualized device as well as the ability to compress and encrypt the data. When multiple servers have access to the same device, a disk controller must implement data integrity functions that include serialization, locking, currency, and coherency control.
Replication services include both point-in-time copies and mirror copies of data on storage devices. A point-in-time copy is an image of data on a device that represents the state of the data at the time the copy was taken. Point-in-time copies can be a complete replica of the original data or can be a sparse copy which is just the data necessary to recreate the image of the data at the time the copy was taken. A mirror copy is continuous duplication of data on a device and can be a complete replica of the data or the data necessary to recreate the mirror copy such as a log file. Duplication may be done synchronously or asynchronously and is generally used to create a copy of the data at some distance from the original for backup and disaster recovery purposes.
FIG. 1 is a schematic block diagram illustrating one embodiment of a network 100 for supporting storage functions in accordance with the prior art. The network 100 may include a plurality of hosts 102 coupled to a storage call flow network 104. In one embodiment, the storage call flow network 104 may comprise a Storage Area Network (SAN) supporting a command interface such as Small Computer Systems Interface (SCSI) requests or a Local Area Network (LAN) supporting Internet SCSI (iSCSI) requests.
Each host 102 traditionally includes a device driver 106 configured to communicate over the storage call flow network 104 with target code 108 of a disk controller 110. Each host 102 may have a different operating system such as, but not limited to, Windows®, Linux®, UNIX®, and AIX®. The device driver 106 is host 102 specific and must be developed to function with the host 102 operating system. The device driver 106 may be configured to receive a final system request or a generic input/output (I/O) request and convert the I/O request into a protocol being used on the disk controller 110, typically SCSI protocol.
The target code 108 is configured to receive and execute the I/O request on a plurality of storage devices 112. The storage devices are coupled with the disk controller 110 using an interconnect 114. Storage device interconnects 114 are well known to those skilled in the art and will not be given further discussion herein.
Storage requirements change along with changes in business practices. Advanced storage features are constantly being developed for storage subsystem disk controllers. Despite the benefits of such storage subsystems, adding advanced storage features to the disk controller requires discreet electronics to be engineered or unique microcode to be written and debugged. However, many of these advanced storage features have been implemented and tested in Database Management Systems (DBMS). Consequently, it is believed that a need exists for an apparatus, system, and method that would support storage functions using an embedded DBMS. Beneficially, such an apparatus, system, and method would combine the established storage functions of the DBMS with the scalability and performance of storage subsystems.